package user

import (
	"context"
	"git.mycaigou.com/gfyx/micro-gfyx-oppty-service/infrastructure/common/utils"
)

type UserRepositoryIface interface {
	// GetUserByAccountOrMobile 通过账号或者手机号获取用户信息
	GetUserByAccountOrMobile(ctx context.Context, account string) (*GfyxUserPo, error)
	// GetUserByMobile 通过账号或者手机号获取用户信息
	GetUserByMobile(ctx context.Context, mobile string) (*GfyxUserPo, error)
	// GetUserByCondition 通过自定义条件获取用户信息
	GetUserByCondition(ctx context.Context, condition map[string]interface{}) (*GfyxUserPo, error)
	// SaveUser 保存用户
	SaveUser(ctx context.Context, data *GfyxUserPo) (int64, error)
	// UserList 用户列表
	UserList(ctx context.Context, userIds []int64, status int32, keyword string, page *utils.PageInfo) ([]*GfyxUserPo, *utils.PageInfo, error)
	// UserDetailByUserId 获取用户详情根据手机号
	UserDetailByUserId(ctx context.Context, userId int64) (*GfyxUserPo, error)
	// UserDetailByAccount 获取用户详情根据账号
	UserDetailByAccount(ctx context.Context, account string) (*GfyxUserPo, error)
	// SaveUserAll 新增加或修改数用户数据
	SaveUserAll(ctx context.Context, userOjb *GfyxUserPo, roleIds []int64, orgIds []int64, orgGuids []string) (int64, error)
	// UserDelete 删除账号
	UserDelete(ctx context.Context, userId int64, userGuid string) (int64, error)
	// UserForbid 禁用用户
	UserForbid(ctx context.Context, userId int64, userGuid string, status int32) (int64, error)

	// QueryUserList 查询用户列表
	QueryUserList(ctx context.Context, condition map[string]interface{}, pageInfo *utils.PageInfo, orderBy string) (int64, []*GfyxUserPo, error)
	UpdateUserByCondition(ctx context.Context, condition, updates map[string]interface{}) error
	// 统计用户数
	GetUserCount(ctx context.Context, condition map[string]interface{}) (int64, error)
	// GetMyUserInfoByUserGuid 通过userguid获取myuser表的用户信息
	GetMyUserInfoByUserGuid(ctx context.Context, userGuid string) (*MyUserPo, error)
}
